<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //在函数中使用this:
        // 不管函数怎么定义,不管函数在哪定义,只看函数的调用(箭头函数除

        // 普通函数(直接调用/全局调用):this指向window
        // 函数名()
        function fn() {
            console.log(this); //Window
        }
        fn() //普通调用,this指向window

        // 定时器函数:this指向window
        // setTimeout(function(){},0)
        // setInterval(function(){},0)
        setTimeout(fn,0)//把fn函数当作定时器处理函数使用

        // 自执行函数:this指向window
        // (function(){})()

        // 对象调用函数:this指向的是xxx对象
        // xxx.函数名():
        // Math.random():
        // 问:a.b.c(()函数中的this指向是?	答:a.b	
        var obj = {
            // 把fn存储的地址赋值给了obj的f成员
            // 从现在开始obj.f和全局变量的fn指向同一个函数空间 
            f:fn,
            name:'我是obj对象'
        }
        obj.f()//d对象调用,this指向obj。

        setTimeout(obj.f,0) // 把obj.f函数当作定时器处理函数使用

        // 事件处理函数:this指向的是事件源(绑定在谁身上的事件)
        // xxx.onclick = function(){}
        // xxx.addEventListener('',function(){})
    </script>
</body>
</html>